from enum import Enum

from PySide6.QtCore import Qt
from PySide6.QtGui import QFont, QTextOption
from PySide6.QtWidgets import QGraphicsTextItem

from 程序核心代码.mvvm重构.基础定义.基础图形项.基础图形组件.子组件.可编辑文本框 import 可编辑文本项
from 程序核心代码.mvvm重构.基础定义.基础图形项.基础图形组件.子组件.组件包装 import 包装用容器
from 程序核心代码.mvvm重构.基础定义.基础图形项.节点图形项 import 字体, 字体大小


class 对齐方式(Enum):
    左对齐 = Qt.AlignLeft
    右对齐 = Qt.AlignRight
    居中对齐 = Qt.AlignCenter
    两端对齐 = Qt.AlignJustify


class 基础文本组件(包装用容器):
    """基础文本组件
    用于显示文本的图形项，继承自包装用容器。
    """

    def __init__(self, 文本='',对齐方式: 对齐方式 = 对齐方式.左对齐, 修改回调=None,父项=None):
        super().__init__(父项)
        self.字体 = 字体
        self.字体大小 = 字体大小
        self._文本 = 文本
        self.修改回调 = 修改回调
        self.文本图形项 = 可编辑文本项(self._文本,修改回调=self.修改回调, 父项=self)
        self.更新字体属性()
        self.设置文本对齐方式(对齐方式.左对齐)
        #起始接口.文本图形项.setTextWidth(宽度)  # 设置文本宽度
        self.setMinimumSize(self.文本图形项.boundingRect().size())
        #起始接口.setMaximumHeight(起始接口.文本图形项.boundingRect().size().height())

    @property
    def 文本(self):
        return self._文本

    @文本.setter
    def 文本(self, value):
        self._文本 = value
        self._设置文本()
    def _设置文本(self):
        self.文本图形项.setPlainText(self._文本)
        #self.setMinimumSize(self.文本图形项.boundingRect().size())
        self.update()
    def 设置文本(self, 文本):
        self.文本 = 文本
    def 更新字体属性(self):
        """自动应用当前的字体和字体大小"""
        try:
            self.文本图形项.setFont(QFont(self.字体, self.字体大小))
        except Exception as e:
            print(f"设置字体属性时发生错误: {e}")
    def 设置文本对齐方式(self, 对齐方式: 对齐方式):
        """设置文本对齐方式"""
        self.文本图形项.设置文本对齐方式(对齐方式)

